const Redis = require('ioredis')
const logger = require('../utils/logger')
require('dotenv').config()

const config = {
  host: process.env.REDIS_HOST || 'localhost',
  port: process.env.REDIS_PORT || 6379,
  password: process.env.REDIS_PASSWORD,
  db: process.env.REDIS_DB || 0,
  keyPrefix: process.env.REDIS_KEY_PREFIX || 'querysystem:',
  
  // 重试策略
  retryStrategy(times) {
    const delay = Math.min(times * 50, 2000)
    return delay
  },
  
  // 连接超时
  connectTimeout: 10000,
  
  // 命令超时
  maxRetriesPerRequest: 3,
  
  // 保持心跳
  keepAlive: 30000
}

// 创建 Redis 客户端实例
const redis = new Redis(config)

// 监听 Redis 连接事件
redis.on('connect', () => {
  logger.info('Redis 连接成功')
})

redis.on('error', (error) => {
  logger.error('Redis 连接错误:', error)
})

module.exports = redis 